JVM加载Class文件的原理机制是什么?

712次阅读
没有评论

共计 675 个字符,预计需要花费 2 分钟才能阅读完成。

JVM是通过类加载器(ClassLoader)将Class字节码文件加载进内存的;

根加载器BootStrap):一般由本地代码实现,主要负责的是JVM基础核心库类装载(如rt.jar
扩展加载器 (Extension):从BootStrap继承而来,负责加载java.ext.dirs系统属性指定目录中的类库;
系统加载器System):别名应用类加载器,继承自Extension,应用最为广泛的,负责从环境变量classpath或者系统属性java.class.path指定目录中装载类;
用户自定义加载器:默认继承自System,特殊定制加载需求才会使用;

开发编写.java文件经过编译生成.class字节码文件,又称类文件,不可执行需要以下几步;

通常是创建一个字节数组读取.class文件中数据进入内存,接着就会产生与所加载类对应的Class对象;

此时的Class对象仍不完整,不可用,需要经过验证、准备(为静态变量分配内存并设置默认的初始值)、解析(将符号引用替换为直接引用)三步;

当前被加载的类存在直接父类且还未被初始化,先初始化父类(重复此三步:加载连接初始化);
如果存在初始化语句,依次执行这些语句(在父类加载的时候也需要做);

开始于JDK 1.2,英文缩写PDM;

JVM自带的BootStrap是根加载器,其他的加载器有且仅有一个父类加载器;
类的加载首先请求父类加载器,父类加载器加载不了时,再由器子类加载器加载
JVM不会向Java程序开放任何对BootStrap的接口;

正文完
 0
裴先生
版权声明:本站原创文章,由 裴先生 2021-03-09发表,共计675字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
本站勉强运行: